﻿using System;
using System.Web.Mvc;
using DAL;
using BLL.Interfaces;
using WebMatrix.WebData;
using GUI.Infrastructure;
using GUI.Models;
using POCOS;
using System.Web.SessionState;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;

namespace GUI.Controllers
{
    [SessionState(SessionStateBehavior.Required)]
    public class HomeController : Controller
    {

        private AuteurContext db = new AuteurContext();
        private IAuteurServices _auteurServices;
        public HomeController(IAuteurServices _auteurServices)
        {
            this._auteurServices = _auteurServices;

        }
        public ActionResult ProductsGridData(string sidx, string sord, int page, int rows)
        {
            //Getting total records count from repository
            int totalRecords;
                var list  = _auteurServices.GetAuteurs();

                totalRecords = list.Count;


            //Preparing anonymous variable with json data
            var productsData = new
            {
                //total pages count
                total = (int)Math.Ceiling((float)totalRecords / (float)rows),
                //page number
                page = page,
                //total records count
                records = totalRecords,
                //table with rows data
                rows = (from product in db.Auteurs
                        select new
                        {
                            //row id
                            id = product.Id,
                            //table of cells values
                            cell = new string[] { 
                       
                                                    product.Name,
                                                     product.Name
                                                }
                        }
                       ).ToArray()
            };

            //Returning json data
            return Json(productsData);
        }


        //constructor





        [Authorize]

        public ActionResult Index()
        {

            int set5000544366auto = WebSecurity.CurrentUserId;
            UserProfile userprofile = new UserProfile();
            var auteur = _auteurServices.Find(set5000544366auto);

            Session["userId"] = set5000544366auto;
            if (auteur == null)
            {
                string userIsDecode = IntExtensions.Encode(set5000544366auto.ToString());


                return RedirectToAction("Create", new { set5000544366auto = userIsDecode });

            }

            return RedirectToAction("Index", "Articles", new { id = IntExtensions.Encode(auteur.Id.ToString()) });

        }
        public ActionResult Action()
        {
            return View();
        }















        [HttpGet]

        public ActionResult Create(string set5000544366auto)
        {

            string userIddecode = IntExtensions.Decode(set5000544366auto);
            int decodeme = Convert.ToInt32(userIddecode);
            AuteurModel model = new AuteurModel();
            model.UserProfileId = decodeme;


            return View(model);
        }

        //
        // POST: /Auteur/Create

        [HttpPost]

        public ActionResult Create(AuteurModel Modelauteur)
        {
            if (ModelState.IsValid)
            {


                Auteur auteur = new Auteur();
                auteur.Id = Modelauteur.Id;
                auteur.Name = Modelauteur.Name;
                auteur.Lastname = Modelauteur.Lastname;
                auteur.Profil = Modelauteur.Profil;
                auteur.Userprofile = Modelauteur.Userprofile;
                auteur.Adressmail = Modelauteur.Adressmail;
                auteur.UserProfileId = Modelauteur.UserProfileId;


                _auteurServices.CreateAuteur(auteur);
                string encodeAuteurId = IntExtensions.Encode(auteur.Id.ToString());

                return RedirectToAction("Index", "Articles", new { id = encodeAuteurId });
            }

            return View(Modelauteur);
        }



        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }


    }
}